package renders

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// OthersRender 渲染XML
func OthersRender(r *gin.Engine) {
	others := r.Group("/others")
	{
		// gin.H 是map[string]interface{}的缩写
		others.GET("/someXML", func(c *gin.Context) {
			// 方式一：自己拼接JSON
			c.XML(http.StatusOK, gin.H{"message": "Hello world!"})
		})

		others.GET("/moreXML", func(c *gin.Context) {
			// 方法二：使用结构体
			type MessageRecord struct {
				Name    string
				Message string
				Age     int
			}
			var msg MessageRecord
			msg.Name = "小王子"
			msg.Message = "Hello world!"
			msg.Age = 18
			c.XML(http.StatusOK, msg)
		})

		others.GET("/someYAML", func(c *gin.Context) {
			c.YAML(http.StatusOK, gin.H{"message": "ok", "status": http.StatusOK})
		})

		// protobuf作用，序列化对象，把[]byte 变成：obj {各种属性类型}；这个对象里可以有任意类型；
		// others.GET("/someProtoBuf", func(c *gin.Context) {
		// 	reps := []int64{int64(1), int64(2)}
		// 	label := "test"
		// 	// protobuf 的具体定义写在 testdata/protoexample 文件中。
		// 	data := &protoexample.Test{
		// 		Label: &label,
		// 		Reps:  reps,
		// 	}
		// 	// 请注意，数据在响应中变为二进制数据
		// 	// 将输出被 protoexample.Test protobuf 序列化了的数据
		// 	c.ProtoBuf(http.StatusOK, data)
		// })
	}
}
